package com.guigu.userservice.dto;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;


import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * 订单表（存储买卖双方的交易订单信息）
 * </p>
 *
 * @author ysp
 * @since 2025-10-10
 */
@Data
public class Order implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 订单唯一标识
     */
    @TableId(value = "order_id", type = IdType.AUTO)
    private Long orderId;

    /**
     * 关联用户表user_id（买家）
     */
    private Long buyerId;

    /**
     * 关联用户表user_id（卖家）
     */
    private Long sellerId;

    /**
     * 关联设备表equipment_id（唯一，一个设备同一时间仅一个有效订单）
     */
    private Long equipmentId;

    /**
     * 订单总金额（单位：元，设备成交价格）
     */
    private BigDecimal orderAmount;

    /**
     * 定金金额（订单总金额的30%，用于锁定设备）
     */
    private BigDecimal depositAmount;

    /**
     * 尾款金额（订单总金额-定金金额）
     */
    private BigDecimal balanceAmount;

    /**
     * 定金支付时间（买家支付定金的时间）
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime depositPayTime;

    /**
     * 尾款支付时间（买家支付尾款的时间）
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime balancePayTime;

    /**
     * 订单状态（0-待支付定金，1-已支付定金，2-待支付尾款，3-已支付尾款，4-已发货，5-已收货，6-已完成，7-已取消）
     */
    private Integer orderStatus;

    /**
     * 支付方式（微信支付、支付宝支付、银行卡支付等）
     */
    private String paymentMethod;

    /**
     * 物流公司（订单状态=4时必填，如顺丰、德邦）
     */
    private String logisticsCompany;

    /**
     * 物流单号（订单状态=4时必填，用于查询物流进度）
     */
    private String logisticsNo;

    /**
     * 确认收货时间（订单状态=5时必填，买家点击确认收货的时间）
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime receiptTime;

    /**
     * 评价时间（订单状态=6时必填，买家提交评价的时间）
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime evaluationTime;

    /**
     * 记录创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    /**
     * 记录更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;

    /**
     * 买家设备检测状态（0-无需检测，1-需要检测，2-检测完成，也就是添加报告成功）
     */
    private  Integer inspectionStatus;


    public Integer getInspectionStatus() {
        return inspectionStatus;
    }

    public void setInspectionStatus( Integer  inspectionStatus) {
        this.inspectionStatus = inspectionStatus;
    }


    //设备表
    @TableField(exist = false)
    private List<Equipment> equipment;
    //设备图片表
    @TableField(exist = false)
    private List<EquipmentImage> equipmentImages;

    @TableField(exist = false)
    private Equipment equipmentOne;
    //映射设备对象
    @TableField(exist = false)
    private Equipment  equipmentdx;
}
